package com.bigdata

object Demo16Set {

  def main(args: Array[String]): Unit = {
    /**
     * Set集合，无序，唯一
     * 并且可以对set求交集、并集、差集
     * set集合比List集合少了排序的方法，其它的方法基本一致
     * foreach:遍历数据
     * map：一条一条处理数据
     * filter：过滤数据
     * flatMap:将一行转换成多行
     * groupBy：分组
     */
    val set = Set(1, 2, 3, 4, 5, 6, 7, 8, 9)

    val set1: Set[Int] = set.map(_ + 1).filter(_ < 5)
    // 转成字符串：mkString
    println(set1.mkString("-"))


    val s1 = Set(1, 2, 3, 4, 5)
    val s2 = Set(3, 4, 5, 6, 7)
    // 交集：intersect ,&, set是无序的
    //    val result1: Set[Int] = s1.intersect(s2)
    // val result1: Set[Int] = s1 intersect s2
    val result1: Set[Int] = s1 & s2
    println(result1.mkString("-"))

    // 并集：union ,|
    // val result2: Set[Int] = s1 | s2
    val result2: Set[Int] = s1.union(s2)
    println(result2.mkString("-"))

    // 差集：diff ,&~
    //    val result3: Set[Int] = s1.diff(s2)
    val result3: Set[Int] = s1 &~ s2
    println(result3.mkString("-"))

    // 子集：subsetOf, s2中的元素是否是s1元素的子集
    val result4: Boolean = s2.subsetOf(s1)
    println(result4)

    // 转成List：toList
    // 1, 2, 3, 4, 5, 6, 7, 8, 9
    val list: List[Int] = set.toList
    println(list)

    // 转为数组
    val array: Array[Int] = set.toArray
    println(array.mkString("-"))

  }

}
